using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.SceneManagement;

public class SceneLoader : MonoBehaviour
{
    // 当前场景的名称
    private string currentScene;
    // 场景映射字典，定义了当前场景到目标场景的映射关系
    private Dictionary<string, string> sceneMap;
    private bool _isPlayerNearby = false; // 用于跟踪玩家是否在梦引附近
    public Player player;
    // 标志位，记录玩家是否在交互范围内
    private bool isPlayerInRange = false;
    public float interactionDistance = 4.0f; // 交互距离

    private Transform _playerTransform; // 玩家对象的 Transform 引用

    private void Start()
    {
        player = player ?? FindObjectOfType<Player>();
        _playerTransform = GameObject.FindGameObjectWithTag("Player")?.transform;

        // 获取当前活动场景的名称
        currentScene = SceneManager.GetActiveScene().name;

        // 初始化场景映射字典
        sceneMap = new Dictionary<string, string>
        {
            { "Scene0","Scene 1"},
            { "Scene1", "Scene2" },  // 从Scene1切换到Scene2
            { "Scene2", "Scene1" },  // 从Scene2切换到Scene3
            // { "Scene3", "Scene1" }   // 从Scene3切换到Scene1
            // 这里可以添加更多场景对
        };
        
        if (player == null)
        {
            Debug.LogError("Player 对象未找到，请确保场景中有一个带有 Player 脚本的对象！");
        }
    }

    private void Update()
    {
        float distanceToPlayer = Vector3.Distance(_playerTransform.position, transform.position);
        _isPlayerNearby = distanceToPlayer <= interactionDistance;

        // 检测玩家是否按下了F键
        if (_isPlayerNearby)
        {
            Debug.Log("near");
            if(Input.GetKeyDown(KeyCode.F))
                CheckInteraction();// 处理交互逻辑
        }
    }

    

    

    private void CheckInteraction()
    {
        // 检查当前场景是否在映射字典中
        if (sceneMap.ContainsKey(currentScene))
        {
            // 获取下一个场景的名称
            string nextScene = sceneMap[currentScene];
            Debug.Log(nextScene);

            player.stats.distortionLevel += 200;
            Debug.Log("失真度现在为"+player.stats.distortionLevel);
            
            // 加载下一个场景
            SceneManager.LoadScene(nextScene, LoadSceneMode.Single);

            // 更新当前场景的名称
            currentScene = nextScene;
        }
        else
        {
            // 如果当前场景不在映射字典中，输出错误信息
            Debug.LogError("当前场景在映射中找不到对应的下一个场景");
        }
    }
}
